from time import sleep

from pyJianYingDraft import Export_resolution, Export_framerate
from src.utils.huey_manager import register_task
from src.utils.logger import get_logger
from src.utils.redis import RedisHelper

logger = get_logger("capcut")

@register_task
def process_video_task(task_id: str, draft_id: str,resolution: Export_resolution, framerate: Export_framerate) -> None:
    """
    独立的视频处理任务函数，避免实例方法序列化问题

    Args:
        task_id: 任务唯一ID
        draft_id: 剪映草稿ID
    """
    try:
        # 延迟导入所需组件（解决序列化问题）
        from .render_task import TaskStatusManager
        from .video_processor import AsyncVideoProcessor

        # 初始化任务状态管理器
        status_manager = TaskStatusManager()

        # 初始化视频处理器
        video_processor = AsyncVideoProcessor(
            status_manager=status_manager,
        )

        sleep(5)

        # 执行视频处理任务
        video_processor.run(task_id, draft_id ,resolution ,framerate)

    except Exception as e:
        logger.error(f"任务处理失败: task_id={task_id}, error={str(e)}")

        # 尝试更新任务状态为失败（如果状态管理器已初始化）
        try:
            if 'status_manager' in locals():
                status_manager.update_task_status(
                    task_id,
                    status=status_manager.STATUS_FAILED,
                    message=f"任务启动失败: {str(e)}",
                    error=str(e)
                )
        except Exception as update_e:
            logger.error(f"任务状态更新失败: {str(update_e)}")

        raise